public class 被Spring管理的4大注解 {
    /**
     * 要把某个对象交给IOC容器管理，需要在对应的类上加上如下注解之一：
     *
     * 注解       	说明                  	位置
     * @Component 声明bean的基础注解      不属于以下三类时，用此注解
     * @Controller  @Component的衍生注解	标注在控制器类上
     * @Service     @Component的衍生注解	标注在业务类上
     * @Repository  @Component的衍生注解	标注在数据访问类(DAO类)上（由于与mybatis整合，用的少,MyBatis在interface XxxMapper上加@Mapper注解）
     *
     * 注意;
     * 声明bean的时候，可以通过@XXX(value="xxx")属性指定bean的名字，如果没有指定，默认为类名首字母小写。
     * 使用以上四个注解只是名字不一样其实都可以声明bean，但是在springboot集成web开发中，声明控制器bean只能用@Controller。
     *
     *
     * @Controller 表示该类被SpringMVC管理, 可以接收http请求, 返回响应数据
     * @ResponseBody 表示要返回的是字符串, 如果返回值类型是对象或者集合, 会自动将对象和集合转成JSON字符串再返回
     * @RestController注解 = @Controller注解 + @ResponseBody注解
     */
    /*
    Bean组件扫描

    前面声明bean的四大注解，要想生效，还需要被组件扫描注解@ComponentScan扫描。
    @ComponentScan注解虽然没有显式配置，但是实际上已经包含在了启动类声明注解 @SpringBootApplication 中，默认扫描的范围是启动类所在包及其子包。
     */
    /**@SpringBootApplication
     *  该注解标识在SpringBoot工程引导类上，是SpringBoot中最最最重要的注解。该注解由三个部分组成：
     *  @SpringBootConfiguration：该注解与 @Configuration 注解作用相同，用来声明当前也是一个配置类。
     *  @ComponentScan：组件扫描，默认扫描当前引导类所在包及其子包。
     *  @EnableAutoConfiguration：SpringBoot实现自动化配置的核心注解。
     */
}
